#ifndef _AW9523B_H_
#define _AW9523B_H_

#include "aw9523b_config.h"
#include "polsys_mcu.h"

// AW9523B 读写使用器件地址最低位进行区分
// 用户需要自行设计 _AW9523B_Write  _AW9523B_Read 接口来操作不同地址的 AW9523B
// 以下是 AD0 AD1 均接高电平时的器件地址
#define AW9523B_WRITE_DEV_ADDR_H_H		0xB6
#define AW9523B_READ_DEV_ADDR_H_H		0xB7
// 以下是 AD0 AD1 分别接低、高时的器件地址
#define AW9523B_WRITE_DEV_ADDR_H_L		0xB4
#define AW9523B_READ_DEV_ADDR_H_L		0xB5
// 以下是 AD0 AD1 分别接高、低时的器件地址
#define AW9523B_WRITE_DEV_ADDR_L_H		0xB2
#define AW9523B_READ_DEV_ADDR_L_H		0xB3
// 以下是 AD0 AD1 均接低电平时的器件地址
#define AW9523B_WRITE_DEV_ADDR_L_L		0xB0
#define AW9523B_READ_DEV_ADDR_L_L		0xB1


// 作为LED驱动管脚时的管脚编号
typedef enum _aw9523b_led_port
{
    AW9523B_LED_PORT_P10 = 0X20,
    AW9523B_LED_PORT_P11,
    AW9523B_LED_PORT_P12,
    AW9523B_LED_PORT_P13,
    AW9523B_LED_PORT_P00,
    AW9523B_LED_PORT_P01,
    AW9523B_LED_PORT_P02,
    AW9523B_LED_PORT_P03,
    AW9523B_LED_PORT_P04,
    AW9523B_LED_PORT_P05,
    AW9523B_LED_PORT_P06,
    AW9523B_LED_PORT_P07,
    AW9523B_LED_PORT_P14,
    AW9523B_LED_PORT_P15,
    AW9523B_LED_PORT_P16,
    AW9523B_LED_PORT_P17
}aw9523b_led_port_t;

// 初始化
void AW9523B_Init();

u8 AW9523B_GetP0();

u8 AW9523B_GetP1();

bool AW9523B_GetP0x(u8 pin_bit);

bool AW9523B_GetP1x(u8 pin_bit);

void AW9523B_SetP0(u8 new_data);

void AW9523B_SetP1(u8 new_data);

void AW9523B_SetP0x(u8 pin_bit, bool level);

void AW9523B_SetP1x(u8 pin_bit, bool level);

// 设置 P07 ~ P00 方向
// 0-输出，1-输入。
void AW9523B_SetP0Dir(u8 dir);

// 设置 P17 ~ P10 方向
// 0-输出，1-输入。
void AW9523B_SetP1Dir(u8 dir);

// 设置 P07 ~ P00 电平变化中断是否开启
// 0-中断使能，1-中断不使能.
void AW9523B_SetP0Inte(u8 inte);

// 设置 P17 ~ P10 电平变化中断是否开启
// 0-中断使能，1-中断不使能.
void AW9523B_SetP1Inte(u8 inte);

// 设置LED亮度，当管脚被设置为LED驱动模式时有效
void AW9523B_SetLEDBrightness(aw9523b_led_port_t port, u8 brightness);

#endif





